/*
 *  Copyright 2013 stanislawbartkowski@gmail.com
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *       http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *  under the License.
 */
package com.gwtmodel.table.datelist;

import java.util.ArrayList;
import java.util.List;

import com.gwtmodel.table.IDataListType;
import com.gwtmodel.table.IDataType;
import com.gwtmodel.table.datalisttype.AbstractLpVModelData;
import com.gwtmodel.table.datalisttype.DataListTypeFactory;
import com.gwtmodel.table.factories.IDataValidateAction;
import com.gwtmodel.table.factories.IDataValidateActionFactory;
import com.gwtmodel.table.injector.GwtGiniInjector;
import com.gwtmodel.table.slotmodel.ISlotListener;

/**
 * 
 * @author hotel
 */
public class DatePeriodListFactory {

    private final DataListTypeFactory tFactory;

    public DatePeriodListFactory() {
        this.tFactory = GwtGiniInjector.getI().getDataListTypeFactory();
    }

    public IDatePeriodList construct(String title, IDatePeriodFactory eFactory,
            ISlotListener setGwt, IDataValidateActionFactory vFactory) {
        if (vFactory == null) {
            vFactory = new IDataValidateActionFactory() {

                @Override
                public IDataValidateAction construct(IDataType dType) {
                    return new ValidateS(dType);
                }
            };
        }
        return new DatePeriodList(title, eFactory, setGwt, vFactory);
    }

    public IDataListType construct(List<AbstractDatePeriodE> li) {
        List<AbstractLpVModelData> a = new ArrayList<AbstractLpVModelData>();
        a.addAll(li);
        return tFactory.constructLp(a);
    }
}
